package discovery;

import java.util.NoSuchElementException;
import java.util.StringTokenizer;


public class DiscoveryProxyFactory {
	
	private static DiscoveryProxyFactory instance = null;
	protected DiscoveryProxy remoteProxy;
	/**
	 * L'unico metodo di questa classe factory. Ritorna un instanza inizializzata del proxy richiesto in base alla stringa passata.
	 * @param s Una stringa rappresentante il protocollo utilizzato nello scambio di messaggi tra nodi.
	 * Il formato utilizzato sar� IP:PORT:PROTOCOLLO
	 * @return Un'istanza del Proxy scelto o null qualora la scelta non fosse possibile.
	 */
	public static synchronized DiscoveryProxyFactory getInstance() {         
		if (instance==null) instance = new DiscoveryProxyFactory (); 
		return instance;    		
	}
	
	public Discovery getProxy(String s){
	    
		StringTokenizer tokenizer = new StringTokenizer(s, ":");		
		try{
			String host 	= tokenizer.nextToken();
			String port 	= tokenizer.nextToken();
			String protocol = tokenizer.nextToken();
		
			if(protocol.equalsIgnoreCase("UDP"))
			{
				if(remoteProxy == null) remoteProxy = new DiscoveryProxy(host, Integer.parseInt(port));
				return remoteProxy;
			}
		} catch(NoSuchElementException e)
		{
			e.printStackTrace();
		}
		return null;	
	}

}
